package com.hjq.fcloud.camear;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.Environment;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class BitmapSaver {

    /**
     * 将Bitmap保存到设备的内部存储中。
     *
     * @param context 上下文对象
     * @param bitmap  要保存的Bitmap对象
     * @param fileName 保存的文件名（包含扩展名）
     * @return 如果保存成功，返回图片路径；否则返回null
     */
    public static String saveToInternalStorage(Context context, Bitmap bitmap, String fileName) {
        File file = new File(context.getCacheDir(), fileName);
        if(saveBitmapToFile(bitmap, file)){
            return file.getAbsolutePath();
        }
        return null;
    }

    /**
     * 将Bitmap保存到设备的外部存储Download中。
     *
     * @param bitmap  要保存的Bitmap对象
     * @param fileName 保存的文件名（包含扩展名）
     * @return 如果保存成功，返回图片路径；否则返回null
     */
    public static String saveToDownload(Bitmap bitmap, String fileName) {
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName);
        if(saveBitmapToFile(bitmap, file)){
            return file.getAbsolutePath();
        }
        return null;
    }

    /**
     * 将Bitmap保存到指定的文件中。
     *
     * @param bitmap Bitmap对象
     * @param file   要保存的文件
     * @return 如果保存成功，返回true；否则返回false。
     */
    private static boolean saveBitmapToFile(Bitmap bitmap, File file) {
        FileOutputStream out = null;
        try {
            if(!file.exists()){
                file.createNewFile();
            }
            out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // 使用PNG格式，质量为100%
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
